using System;
using System.Linq;
using System.Runtime.Serialization;
using System.Data.Objects.DataClasses;
using System.Xml.Serialization;
using System.ComponentModel;
using System.Collections.Generic;
using System.Text;
using Acme.Northwind.EFDAL.Interfaces;

namespace Acme.Northwind.EFDAL.Interfaces.Entity
{
	/// <summary>
	/// This is the base interface for the EF entity for OrderDetail
	/// </summary>
	public partial interface IOrderDetail : nHydrate.EFCore.DataAccess.IBusinessObject, nHydrate.EFCore.DataAccess.INHEntityObject, System.ComponentModel.IDataErrorInfo, System.IEquatable<Acme.Northwind.EFDAL.Interfaces.Entity.IOrderDetail>, nHydrate.EFCore.DataAccess.IAuditable
	{
		#region Properties

		/// <summary>
		/// The property that maps back to the database 'Order Details.Discount' field
		/// </summary>
		[System.ComponentModel.Browsable(true)]
		[System.ComponentModel.DisplayName("Discount")]
		System.Single Discount { get; set; }

		/// <summary>
		/// The property that maps back to the database 'Order Details.OrderID' field
		/// </summary>
		[System.ComponentModel.Browsable(true)]
		[System.ComponentModel.DataAnnotations.Key()]
		[System.ComponentModel.ReadOnly(true)]
		[System.ComponentModel.DisplayName("OrderID")]
		int OrderID { get; set; }

		/// <summary>
		/// The property that maps back to the database 'Order Details.ProductID' field
		/// </summary>
		[System.ComponentModel.Browsable(true)]
		[System.ComponentModel.DataAnnotations.Key()]
		[System.ComponentModel.ReadOnly(true)]
		[System.ComponentModel.DisplayName("ProductID")]
		int ProductID { get; set; }

		/// <summary>
		/// The property that maps back to the database 'Order Details.Quantity' field
		/// </summary>
		[System.ComponentModel.Browsable(true)]
		[System.ComponentModel.DisplayName("Quantity")]
		short Quantity { get; set; }

		/// <summary>
		/// The property that maps back to the database 'Order Details.UnitPrice' field
		/// </summary>
		[System.ComponentModel.Browsable(true)]
		[System.ComponentModel.DisplayName("UnitPrice")]
		decimal UnitPrice { get; set; }

		/// <summary>
		/// The audit field for the 'Created By' column.
		/// </summary>
		[System.ComponentModel.Browsable(false)]
		string CreatedBy { get; }

		/// <summary>
		/// The audit field for the 'Created Date' column.
		/// </summary>
		[System.ComponentModel.Browsable(false)]
		DateTime? CreatedDate { get; }

		/// <summary>
		/// The audit field for the 'Modified By' column.
		/// </summary>
		[System.ComponentModel.Browsable(false)]
		string ModifiedBy { get; }

		/// <summary>
		/// The audit field for the 'Modified Date' column.
		/// </summary>
		[System.ComponentModel.Browsable(false)]
		DateTime? ModifiedDate { get; }

		#endregion

		#region Navigation Properties

		/// <summary>
		/// The navigation definition for walking OrderDetail->Order (for role 'Order_details_orders')
		/// </summary>
		Acme.Northwind.EFDAL.Interfaces.Entity.IOrder Order_details_ordersOrder { get; set; }

		/// <summary>
		/// The navigation definition for walking OrderDetail->Product (for role 'Order_details_products')
		/// </summary>
		Acme.Northwind.EFDAL.Interfaces.Entity.IProduct Order_details_productsProduct { get; set; }

		#endregion

	}

}

#region Metadata Class

namespace Acme.Northwind.EFDAL.Interfaces.Entity.Metadata
{
	/// <summary>
	/// Metadata class for the 'OrderDetail' entity
	/// </summary>
	public partial class OrderDetailMetadata : nHydrate.EFCore.DataAccess.IMetadata
	{
		#region Properties

		/// <summary>
		/// Metadata information for the 'Discount' parameter
		/// </summary>
		[System.ComponentModel.DataAnnotations.Required(ErrorMessage = "'Discount' is required.")]
		[System.ComponentModel.DataAnnotations.DisplayAttribute(Description = "", Name = "Discount", AutoGenerateField = true)]
		public object Discount;

		/// <summary>
		/// Metadata information for the 'OrderID' parameter
		/// </summary>
		[System.ComponentModel.DataAnnotations.Required(ErrorMessage = "'OrderID' is required.")]
		[System.ComponentModel.DataAnnotations.Key()]
		[System.ComponentModel.DataAnnotations.Editable(false)]
		[System.ComponentModel.ReadOnly(true)]
		[System.ComponentModel.DataAnnotations.DisplayAttribute(Description = "", Name = "OrderID", AutoGenerateField = true)]
		public object OrderID;

		/// <summary>
		/// Metadata information for the 'ProductID' parameter
		/// </summary>
		[System.ComponentModel.DataAnnotations.Required(ErrorMessage = "'ProductID' is required.")]
		[System.ComponentModel.DataAnnotations.Key()]
		[System.ComponentModel.DataAnnotations.Editable(false)]
		[System.ComponentModel.ReadOnly(true)]
		[System.ComponentModel.DataAnnotations.DisplayAttribute(Description = "", Name = "ProductID", AutoGenerateField = true)]
		public object ProductID;

		/// <summary>
		/// Metadata information for the 'Quantity' parameter
		/// </summary>
		[System.ComponentModel.DataAnnotations.Required(ErrorMessage = "'Quantity' is required.")]
		[System.ComponentModel.DataAnnotations.DisplayAttribute(Description = "", Name = "Quantity", AutoGenerateField = true)]
		public object Quantity;

		/// <summary>
		/// Metadata information for the 'UnitPrice' parameter
		/// </summary>
		[System.ComponentModel.DataAnnotations.Required(ErrorMessage = "'UnitPrice' is required.")]
		[System.ComponentModel.DataAnnotations.DisplayAttribute(Description = "", Name = "UnitPrice", AutoGenerateField = true)]
		public object UnitPrice;

		/// <summary>
		/// Metadata information for the 'CreatedBy' parameter
		/// </summary>
		[System.ComponentModel.DataAnnotations.StringLength(100, ErrorMessage = "The property 'CreatedBy' has a maximum length of 100")]
		[System.ComponentModel.ReadOnly(true)]
		public object CreatedBy;

		/// <summary>
		/// Metadata information for the 'CreatedDate' parameter
		/// </summary>
		[System.ComponentModel.ReadOnly(true)]
		public object CreatedDate;

		/// <summary>
		/// Metadata information for the 'ModifiedBy' parameter
		/// </summary>
		[System.ComponentModel.DataAnnotations.StringLength(100, ErrorMessage = "The property 'ModifiedBy' has a maximum length of 100")]
		[System.ComponentModel.ReadOnly(true)]
		public object ModifiedBy;

		/// <summary>
		/// Metadata information for the 'ModifiedDate' parameter
		/// </summary>
		[System.ComponentModel.ReadOnly(true)]
		public object ModifiedDate;

		/// <summary>
		/// Metadata information for the 'Timestamp' parameter
		/// </summary>
		[System.ComponentModel.DataAnnotations.Timestamp()]
		[System.ComponentModel.ReadOnly(true)]
		public object Timestamp;

		#endregion

	}

}

#endregion

